package com.example.smartgreenhouse.annotation;


import java.lang.annotation.*;
import java.util.concurrent.TimeUnit;

/**
 * 自定义注解：限流
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.METHOD})
@Documented
public @interface Limit {
    /**
     * 限流类型，根据IP、用户ID或者其他来进行限流
     */
    enum LimitType{
        IP,USER,NULL
    }
    /**
     * 资源的key,唯一
     * 作用：不同的接口，不同的流量控制
     */
    String key() default "";
    /**
     * 最多的访问限制次数，每秒钟
     */
    double permitsPerSecond () ;
    /**
     * 获取令牌最大等待时间
     */
    long timeout();
    /**
     * 获取令牌最大等待时间,单位(例:分钟/秒/毫秒) 默认:毫秒
     */
    TimeUnit timeunit() default TimeUnit.MILLISECONDS;

    /**
     * 得不到令牌的提示语
     */
    String msg() default "系统繁忙,请稍后再试.";

    LimitType limitType() default LimitType.NULL;
}
